Data seek technique

ABSTRACT

Provided are techniques for locating data in a storage area. Upon receiving a request for data, a search for the data is simultaneously initiated on at least two storage devices, the search being performed on a first storage device using a top down search and on a second storage device using a bottom up search. In response to receiving an indication from at least one of the storage devices that the data was located, the search is terminated on each of the other storage devices.

RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.10/813,244, filed on Mar. 29, 2004, which is incorporated herein byreference in its entirety.

BACKGROUND

Conventional systems may include storage configurations with twoRedundant Array of Independent Disks (RAID) devices, which may bereferred to as RAID devices Level 1. Disk mirroring refers to atechnique in which data is written to two duplicate disks simultaneouslyso that if one of the disk drives controlling one of the disks fails,another disk drive controlling the other disk may access a copy of thedata. Thus, one of the RAID devices mirrors (i.e., stores copies of) thedata of the other RAID device.

A software interface to a disk controller will tell the disk controllerwhich track and sector to read from. To perform the read, the diskcontroller has to move a read/write head in or out to an appropriatetrack. The time that it takes to do this is called the seek time. Oncethe head is correctly positioned, the controller has to wait for thedesired sector to spin around so it is under the head. This time iscalled the rotational delay.

Since the disk drive may receive many requests for reads and writes, therequests are queued. Then, there are several strategies for schedulingI/O events on a disk. For example, one strategy may be referred to as“Shortest Seek Time First”, in which case when a new request arrives,seek distance of the new request from the current request beingprocessed is calculated and the new request is placed into the queueaccordingly. Then, the next closest access is serviced when the currentrequest has been serviced. Another strategy may be referred to as “firstcome first served”, in which case requests are processed in the orderthat they are received. Yet another strategy may be referred to as an“elevator algorithm,” in which case requests come in to go to aparticular track on a more or less random basis, and the read/write headgoes in one direction as long as there are requests in that direction,and then goes in the other direction as long as there are requests inthe other direction. At any given instant, the read/write head is eithermoving in toward the center of the disk or out toward the outside. Ifthe read/write head can satisfy a new request by moving in the samedirection, the read/write head does so, but if the read/write head hasto switch directions and there are additional requests that could besatisfied without changing direction, the read/write head will notsatisfy the new request until the read/write head turns around.

In order to locate data today, conventional systems implement a strategyfor scheduling an I/O event on a disk on one of the RAID devices, whileignoring the other one of the RAID devices.

BRIEF DESCRIPTION OF THE DRAWINGS

Referring now to the drawings in which like reference numbers representcorresponding parts throughout:

FIG. 1 illustrates computer system in accordance with certainembodiments;

FIG. 2 illustrates computer system in accordance with certain otherembodiments; and

FIG. 3 illustrates operations to manage communications between devicesin accordance with embodiments.

DETAILED DESCRIPTION

In the following description, reference is made to the accompanyingdrawings which form a part hereof and which illustrate severalembodiments. It is understood that other embodiments may be utilized andstructural and operational changes may be made.

FIG. 1 illustrates a computing environment in accordance withembodiments. A client computer 100 is connected via a network 190 to aserver computer 120. The client computer 100 may comprise any computingdevice known in the art, such as a server, mainframe, workstation,personal computer, hand held computer, laptop telephony device, networkappliance, etc. The network 190 may comprise any type of network, suchas, for example, a Storage Area Network (SAN), a Local Area Network(LAN), Wide Area Network (WAN), the Internet, an Intranet, etc. Theclient computer 100 includes a Central Processing Unit (CPU) 102 and asystem memory 104, which may be implemented in volatile and/ornon-volatile devices. One or more client applications 110 may execute inthe system memory 104.

The server computer 120 includes a Central Processing Unit (CPU) 122system memory 124, which may be implemented in volatile and/ornon-volatile devices. A data seek controller 132 executes in the systemmemory 124. In certain embodiments, the data seek controller 132 is diskcontroller hardware and software (e.g., RAID controller hardware withfirmware). Additionally, one or more server applications 160 execute insystem memory 124.

The server computer 120 provides the client computer 100 with access todata in a data stores 170 a . . . 170 n (where a, n, and the ellipsesindicate that that are two or more data stores). Although data stores170 a . . . 170 n are illustrated for ease of understanding, any numberof data stores may be connected directly or indirectly (e.g., connectedto another computer that is connected to server computer 120) to servercomputer 120.

The data stores 170 a . . . 170 n may each comprise a storage device oran array of storage devices, such as Direct Access Storage Devices(DASDs), Just a Bunch of Disks (JBOD), Redundant Array of IndependentDisks (RAID), virtualization device, etc. Additionally, each data store170 a . . . 170 n includes one or more storage areas.

FIG. 2 illustrates a computer system in accordance with certain otherembodiments. In FIG. 2, a data seek controller 132 is able to accessstorage areas 200 a . . . 200 n. At least one storage area may beconnected (directly or indirectly) to, for example, any bus interfaceknown in the art, such as a Peripheral Component Interconnect (PCI) busor PCI express bus (PCI Special Interest Group, PCI Local BusSpecification, Rev 2.3, published March 2002). Although illustrated asseparate components, storage areas 200 a . . . 200 n may be combined inany manner. For example, storage areas 200 a and 200 c may be located onone storage device, while storage area 200 b may be located on anotherstorage device. Also, the storage areas 200 a . . . 200 n may beattached to one or more computers (e.g., servers). The data seekcontroller 132 may be located at the same or different computer to whichone or more storage areas 200 a . . . 200 n is attached.

FIG. 3 illustrates operations to locate data in accordance withembodiments. Control begins at block 300 with receipt by the data seekcontroller 132 of a request for data. In certain embodiments, therequest is a read request that provides a file name, a folder name, orother identifier for the requested data. In block 302, the data seekcontroller 132 identifies at least two storage areas storing copies ofthe requested data. In certain embodiments, the storage areas arestorage devices (e.g., 170 a and 170 b). In certain embodiments, theidentification is done by maintaining a list of identifiers (e.g., filenames) in each storage area and receiving a request for data along withan identifier for the data that is used to identify the storage areasstoring copies of the data with that identifier. In certain embodiments,two storage devices are provided, and these two storage devices mirrordata to each other and these two storage devices are identified bydefault. In certain embodiments, the data seek controller 132 selectsall storage areas that have copies of the data. In certain embodiments,the number of storage areas that are to be selected is user specified.There may be many copies of data in different storage areas at differentlocations, and, in certain embodiments, the storage areas to be searchedare selected based on a variety of criteria (e.g., location of storagearea relative to data seek controller 132, data transfer rate betweenthe storage area and the data seek controller 132 or type oftransmission medium between the storage area and data seek controller).For example, storage areas closest to the data seek controller 132 maybe selected.

In block 304, the data seek controller 132 simultaneously initiates asearch for the requested data on at least two of the storage areas usinga different search technique on each storage area. In alternativeembodiments, a different search technique is used for each storage areain varying storage environments made up of one or more storage areas(e.g., different SANs, JBODs, NAS devices, etc.), but a same searchtechnique may be used in more than one storage environment. In certainembodiments, the data seek controller 132 selects the particular searchtechnique to be applied based on, for example, a round robin technique.In certain embodiments, the particular search techniques to be used areuser specified. In certain embodiments, at least two storage areasreside on two RAID Level 1 (also referred to as “RAID 1) storage devicesaccessible by the data seek controller 132, and a top down search isperformed on one RAID 1 device while a bottom up search is performed onthe other RAID 1 device.

In block 306, the data seek controller 132 receives an indication fromat least one of the storage areas that the data was located. In block308, the data seek controller 132 terminates the searches for the dataon the other storage areas. In block 310, the data seek controller 132returns the requested data.

In certain embodiments, a client application 110 sends a request fordata to CPU 122 via CPU 102. The CPU 122 invokes the data seekcontroller 132 to retrieve the data. The data seek controller 132retrieves and returns the data to the CPU 122, which returns the data tothe client application 110 via CPU 102.

Thus, embodiments reduce seek time for storage configurations in whichmultiple copies of data are stored in different storage areas (e.g., instorage configurations that use RAID1 devices). Embodiments allow thesearch for data to occur simultaneously on multiple storage areas usingdifferent search techniques. For example, with two RAID1 devices, abottom-up search is performed on one RAID1 device and a top-down searchis performed on the other RAID1 device, which results in decreasing seektime by 50% on average.

Additional Embodiment Details

The described embodiments may be implemented as a method, apparatus orarticle of manufacture using programming and/or engineering techniquesto produce software, firmware, hardware, or any combination thereof. Theterm “article of manufacture” and “circuitry” as used herein refers to astate machine, code or logic implemented in hardware logic (e.g., anintegrated circuit chip, Programmable Gate Array (PGA), ApplicationSpecific Integrated Circuit (ASIC), etc.) or a computer readable medium,such as magnetic storage medium (e.g., hard disk drives, floppy disks,,tape, etc.), optical storage (CD-ROMs, optical disks, etc.), volatileand non-volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs,DRAMs, SRAMs, firmware, programmable logic, etc.). Code in the computerreadable medium is accessed and executed by a processor. When the codeor logic is executed by a processor, the circuitry may include themedium including the code or logic as well as the processor thatexecutes the code loaded from the medium. The code in which preferredembodiments are implemented may further be accessible through atransmission media or from a file server over a network. In such cases,the article of manufacture in which the code is implemented may comprisea transmission media, such as a network transmission line, wirelesstransmission media, signals propagating through space, radio waves,infrared signals, etc. Thus, the “article of manufacture” may comprisethe medium in which the code is embodied. Additionally, the “article ofmanufacture” may comprise a combination of hardware and softwarecomponents in which the code is embodied, processed, and executed. Ofcourse, those skilled in the art will recognize that many modificationsmay be made to this configuration, and that the article of manufacturemay comprise any information bearing medium known in the art.Additionally, the devices, adaptors, etc., may be implemented in one ormore integrated circuits on the adaptor or on the motherboard.

The illustrated operations of FIG. 3 show certain events occurring in acertain order. In alternative embodiments, certain operations may beperformed in a different order, modified or removed. Moreover,operations may be added to the above described logic and still conformto the described embodiments. Further, operations described herein mayoccur sequentially or certain operations may be processed in parallel.Yet further, operations may be performed by a single processing unit orby distributed processing units.

The foregoing description of various embodiments has been presented forthe purposes of illustration and description. It is not intended to beexhaustive or limiting. Many modifications and variations are possiblein light of the above teachings.

1. A method comprising: upon receiving a request for data,simultaneously initiating a search for the data on at least two storagedevices, the search being performed on a first storage device using atop down search and on a second storage device using a bottom up search;and in response to receiving an indication from at least one of thestorage devices that the data was located, terminating the search oneach of the other storage devices.
 2. The method of claim 1, wherein thestorage devices comprise storage arrays.
 3. The method of claim 1,wherein the first storage device and the second storage device eachcomprise a Redundant Array of Independent Disks (RAID) Level 1 storagedevice.
 4. The method of claim 1, wherein the first storage device andthe second storage device are each part of a Redundant Array ofIndependent Disks (RAID) Level 1 volume.
 5. The method of claim 1,further comprising: identifying the at least two storage devices storingcopies of the requested data.
 6. The method of claim 5, furthercomprising: identifying the at least two storage devices to be searchedbased on at least one of a location of the storage devices relative to adata seek controller, data transfer rate between the storage devices andthe data seek controller, and type of transmission medium between thestorage device and the data seek controller.
 7. The method of claim 1,wherein the number of storage devices to be searched is user specified.8. The method of claim 1, further comprising: returning the data inresponse to the request.
 9. A system, comprising: a first storagedevice; a second storage device; circuitry operable to: upon receiving arequest for data, simultaneously initiate a search for the data on thefirst storage device and the second storage device, the search beingperformed on the first storage device using a top down search and on thesecond storage device using a bottom up search; and in response toreceiving an indication from one of the storage devices that the datawas located, terminate the search on the other storage device.
 10. Thesystem of claim 9, wherein the first and second storage devices comprisestorage arrays.
 11. The system of claim 9, wherein the first storagedevice and the second storage device each comprise a Redundant Array ofIndependent Disks (RAID) Level 1 storage device.
 12. The system of claim9, wherein the first storage device and the second storage device areeach part of a Redundant Array of Independent Disks (RAID) Level 1volume.
 13. The system of claim 9, wherein the circuitry is operable to:identify the first storage device and the second storage device storingcopies of the requested data.
 14. The system of claim 13, wherein thecircuitry is operable to: identify the first storage device and thesecond storage device to be searched based on at least one of a locationof the storage devices relative to the circuitry, data transfer ratebetween the storage devices and the circuitry, and type of transmissionmedium between the storage device and the circuitry.
 15. The system ofclaim 9, wherein the number of storage devices to be searched is userspecified.
 16. The system of claim 9, wherein the circuitry is operableto: return the data in response to the request.
 17. An apparatuscomprising: a data seek controller, the data seek controller tosimultaneously initiate a search for the data on at least two storagedevices upon receiving a request for data, the search to be performed ona first storage device using a top down search and on a second storagedevice using a bottom up search and, in response to receiving anindication from at least one of the storage devices that the data waslocated, to terminate the search on each of the other storage devices.18. The apparatus of claim 17, wherein the first and second storagedevices comprise storage arrays.
 19. The apparatus of claim 17, whereinthe first storage device and the second storage device each comprise aRedundant Array of Independent Disks (RAID) Level 1 storage device. 20.The apparatus of claim 17, wherein the first storage device and thesecond storage device are each part of a Redundant Array of IndependentDisks (RAID) Level 1 volume.
 21. The apparatus of claim 17, comprising:data seek controller to identify the first storage device and the secondstorage device storing copies of the requested data.
 22. The apparatusof claim 21, comprising: the data seek controller to identify the firststorage device and the second storage device to be searched based on atleast one of a location of the storage devices relative to thecircuitry, data transfer rate between the storage devices and thecircuitry, and type of transmission medium between the storage deviceand the circuitry.
 23. The apparatus of claim 17, wherein the number ofstorage devices to be searched is user specified.
 24. The apparatus ofclaim 17, comprising: the data seek controller to return the data inresponse to the request.
 25. An article of manufacture embodied as oneof hardware logic and a computer readable medium for locating data in astorage device, wherein the article of manufacture is operable to: uponreceiving a request for data, simultaneously initiate a search for thedata on at least two storage devices, the search being performed on afirst storage device using a top down search and on a second storagedevice using a bottom up search; and in response to receiving anindication from at least one of the storage devices that the data waslocated, terminate the search on each of the other storage devices. 26.The article of manufacture of claim 25, wherein the storage devicescomprise storage arrays.
 27. The article of manufacture of claim 25,wherein the first storage device and the second storage device eachcomprise a Redundant Array of Independent Disks (RAID) Level 1 storagedevice.
 28. The article of manufacture of claim 25, wherein the firststorage device and the second storage device are each part of aRedundant Array of Independent Disks (RAID) Level 1 volume.
 29. Thearticle of manufacture of claim 25, wherein the article of manufactureis operable to: identify the at least two storage devices storing copiesof the requested data.
 30. The article of manufacture of claim 29,wherein the article of manufacture is operable to: identify the at leasttwo storage devices to be searched based on at least one of a locationof the storage devices relative to a data seek controller, data transferrate between the storage devices and the data seek controller, and typeof transmission medium between the storage device and the data seekcontroller.
 31. The article of manufacture of claim 25, wherein thenumber of storage devices to be searched is user specified.
 32. Thearticle of manufacture of claim 25, wherein the article of manufactureis operable to: return the data in response to the request.